package ge.lowlevel.box2d;

import ge.exceptions.FunctionNonSuported;

/**
 * 
 * @author Abel
 * Represents the World in box2d
 * @param <WorldType> Sometimes World will have to connect her concret implementation with other 
 * objects.
 */
public class WorldGe<WorldType>
{
	
	private double pixelsPerMeter;
	/**
	 * 	Constructs a new Box2d World, with a AABB query. (The ranges of the world)
	 *  You have always to construct a WorldGe hierarchy class, never that abstract class.
	 * @param xGravity Gravity in X edge
	 * @param yGravity Gravity in Y edge
	 * @param minVertex min vertex form AABB query 
	 * @param maxVertex max vertex form AABB query
	 * @param doSleep Start sleeping
	 * @param pixelPerMeter Establishes the scale of the world. By example, 30 value will mean that
	 *  	30 pixels are equal to a meter inside the world.
	 */
	public WorldGe(double xGravity, double yGravity, double minVertex,double maxVertex,boolean doSleep, double pixelsPerMeter)
	{
		this.pixelsPerMeter = pixelsPerMeter;
	}
	/**
	 * 
	 * @return The scale of the world.  By example, 30 value will mean that
	 *  	30 pixels are equal to a meter inside the world.
	 */
	public final double getScale()
	{
		return pixelsPerMeter;
	}

	/**
	 * 
	 * @return The world type 
	 * @throws FunctionNonSuported If the concrete implementation don't support it
	 */
	public WorldType getWorld() throws FunctionNonSuported
	{
		throw new FunctionNonSuported("Box2D-WorldGe", "getWorld");
	}
	/**
	 * 	Makes a step in the physics world
	 * @param timeStep	Time to advance in this step
	 * @param iteration Number of iterations to do
	 * @throws FunctionNonSuported If the concrete implementation don't support it
	 */
	public void step(double timeStep, double iteration) throws FunctionNonSuported
	{
		throw new FunctionNonSuported("Box2D-WorldGe", "step");
	}
	/**
	 * @return The number of bodies actually in the world
	 * @throws FunctionNonSuported
	 */
	public int bodyCount() throws FunctionNonSuported
	{
		throw new FunctionNonSuported("Box2D-WorldGe", "bodyCount");
	}
	
	
	

}
